// DeepSeek API通信模块
const API = {
    // API配置
    config: {
        apiKey: 'sk-93e55918bfe040eeacf1979ab87b7121',
        endpoint: 'https://api.deepseek.com/chat/completions',
        model: 'deepseek-chat'
    },
    
    // 获取游戏表现评价
    async getGameFeedback(gameStats) {
        try {
            // 构建请求数据
            const requestData = {
                model: this.config.model,
                messages: [
                    {
                        role: 'system',
                        content: `你是一个幽默风趣的游戏评论员，擅长用轻松诙谐的语言评价玩家的游戏表现。
                        请根据提供的游戏数据，给出有趣、幽默但又不失专业的评价。
                        评价应该包括：
                        1. 对得分的幽默点评
                        2. 对游戏用时的调侃
                        3. 对玩家选择的角色和武器的有趣评论
                        4. 一些鼓励的话和小建议
                        请保持语言生动有趣，使用一些游戏术语但不要太专业，让普通玩家也能轻松理解。
                        评价长度控制在100-200字左右。`
                    },
                    {
                        role: 'user',
                        content: `请评价我的游戏表现：
                        - 关卡：第${gameStats.level}关
                        - 得分：${gameStats.score}分
                        - 用时：${gameStats.timeSpent}
                        - 消灭敌人：${gameStats.enemiesKilled}个
                        - 使用角色：${this.getCharacterName(gameStats.character)}
                        - 使用武器：${this.getWeaponName(gameStats.weapon)}`
                    }
                ],
                stream: false
            };
            
            // 发送请求
            const response = await fetch(this.config.endpoint, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${this.config.apiKey}`
                },
                body: JSON.stringify(requestData)
            });
            
            // 处理响应
            if (!response.ok) {
                throw new Error(`API请求失败: ${response.status}`);
            }
            
            const data = await response.json();
            
            // 返回评价内容
            return data.choices?.[0]?.message?.content || '评价获取失败，请稍后再试！';
        } catch (error) {
            console.error('获取游戏评价失败:', error);
            // 返回备用评价
            return this.getBackupFeedback(gameStats);
        }
    },
    
    // 获取角色中文名
    getCharacterName(characterType) {
        const characterMap = {
            'soldier': '士兵',
            'sniper': '狙击手',
            'medic': '医生',
            'engineer': '工程师'
        };
        return characterMap[characterType] || characterType;
    },
    
    // 获取武器中文名
    getWeaponName(weaponType) {
        const weaponMap = {
            'rifle': '步枪',
            'shotgun': '霰弹枪',
            'sniper': '狙击枪',
            'machinegun': '机关枪'
        };
        return weaponMap[weaponType] || weaponType;
    },
    
    // 备用评价生成器（当API调用失败时使用）
    getBackupFeedback(gameStats) {
        const feedbackTemplates = [
            `哇哦！你在第${gameStats.level}关拿到了${gameStats.score}分，这枪法简直比外卖小哥找地址还准！用了${gameStats.timeSpent}就搞定了${gameStats.enemiesKilled}个敌人，厉害厉害！继续保持，下一关说不定能打破世界纪录！`,
            
            `恭喜你完成了第${gameStats.level}关！${gameStats.score}分的成绩相当不错，特别是用${this.getWeaponName(gameStats.weapon)}这种武器，简直是如虎添翼！不过${gameStats.timeSpent}的用时...嗯...还有提升空间，下次试试把敌人当快递送，说不定更快！`,
            
            `天哪！${this.getCharacterName(gameStats.character)}配上${this.getWeaponName(gameStats.weapon)}，这组合简直是游戏界的黄金搭档！${gameStats.score}分的得分证明了你的实力，期待你下一关的表现，可别让我等太久哦！`,
            
            `第${gameStats.level}关通关！${gameStats.score}分，${gameStats.enemiesKilled}个敌人，这数据看起来就像是游戏开发者本人在玩！不过我偷偷告诉你，高手都是用更少的子弹消灭更多的敌人，下次试试精准射击吧！`,
            
            `太精彩了！你用${this.getCharacterName(gameStats.character)}角色在${gameStats.timeSpent}内就拿下了第${gameStats.level}关，得分${gameStats.score}！如果游戏有MVP评选，你肯定是当之无愧的候选人！继续加油，传奇之路才刚刚开始！`
        ];
        
        // 根据得分选择不同的评价
        let templateIndex;
        if (gameStats.score > 3000) {
            templateIndex = 4; // 最高分模板
        } else if (gameStats.score > 1500) {
            templateIndex = Math.floor(Math.random() * 2) + 2; // 中等分数模板
        } else {
            templateIndex = Math.floor(Math.random() * 2); // 较低分模板
        }
        
        return feedbackTemplates[templateIndex];
    },
    
    // 测试API连接
    async testApiConnection() {
        try {
            const response = await fetch(this.config.endpoint, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${this.config.apiKey}`
                },
                body: JSON.stringify({
                    model: this.config.model,
                    messages: [
                        { role: 'system', content: '你是一个测试助手。' },
                        { role: 'user', content: '测试连接' }
                    ],
                    stream: false
                })
            });
            
            return response.ok;
        } catch (error) {
            console.error('API连接测试失败:', error);
            return false;
        }
    },
    
    // 获取详细的游戏分析
    async getDetailedAnalysis(gameStats) {
        try {
            const requestData = {
                model: this.config.model,
                messages: [
                    {
                        role: 'system',
                        content: `你是一个专业的游戏数据分析专家，擅长分析玩家的游戏表现并提供改进建议。
                        请根据提供的游戏数据，进行详细的分析并给出具体的改进建议。`
                    },
                    {
                        role: 'user',
                        content: `请详细分析我的游戏数据并提供改进建议：
                        ${JSON.stringify(gameStats, null, 2)}`
                    }
                ],
                stream: false
            };
            
            const response = await fetch(this.config.endpoint, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${this.config.apiKey}`
                },
                body: JSON.stringify(requestData)
            });
            
            if (!response.ok) {
                throw new Error(`API请求失败: ${response.status}`);
            }
            
            const data = await response.json();
            return data.choices?.[0]?.message?.content || '分析获取失败';
        } catch (error) {
            console.error('获取详细分析失败:', error);
            return '暂时无法提供详细分析，请稍后再试。';
        }
    },
    
    // 生成游戏成就评价
    async generateAchievementComment(achievement) {
        try {
            const requestData = {
                model: this.config.model,
                messages: [
                    {
                        role: 'system',
                        content: `你是一个游戏成就播报员，当玩家获得成就时，用激动人心的语言进行播报。
                        请保持简短、热情、充满激情！`
                    },
                    {
                        role: 'user',
                        content: `玩家获得了成就：${achievement}，请生成一段激动人心的播报语！`
                    }
                ],
                stream: false
            };
            
            const response = await fetch(this.config.endpoint, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': `Bearer ${this.config.apiKey}`
                },
                body: JSON.stringify(requestData)
            });
            
            if (!response.ok) {
                throw new Error(`API请求失败: ${response.status}`);
            }
            
            const data = await response.json();
            return data.choices?.[0]?.message?.content || '恭喜获得成就！';
        } catch (error) {
            console.error('生成成就评价失败:', error);
            return `🎉 恭喜！你获得了${achievement}成就！`;
        }
    }
};

// 预加载时测试API连接
window.addEventListener('load', async () => {
    if (typeof DEBUG !== 'undefined' && DEBUG) {
        console.log('测试API连接...');
        const isConnected = await API.testApiConnection();
        console.log('API连接状态:', isConnected ? '成功' : '失败');
    }
});